<?php

require_once realpath (dirname (__FILE__) . '//..//..//pages.php');
require_once INC_FUNCTIONS;
require_once INC_MESSAGES;

function classe ($values) {
    require_once CLASS_CLASSE;
    $classe = new Classe ($values);
    return $classe->insert ();
}

function distretto ($values) {
    require_once CLASS_DISTRETTO;
    $distretto = new Distretto ($values);
    return $distretto->insert ();
}

function docente ($values) {
    require_once CLASS_DOCENTE;
    require_once CLASS_LAVORA_IN;
    require_once CLASS_INSEGNA;

    $flag = true;

    $docente = new Docente ($values);
    if ($docente->insert ()) {
        $docente->reload ();
        $values = array_merge ($values, $docente->getValues ());

        if (is_array ($values['IDscuola'])) {
            $arr = $values['IDscuola'];
            foreach ($arr as $value) {
                $values['IDscuola'] = $value;
                $lavora_in = new LavoraIn ($values);
                $flag = $flag && $lavora_in->insert ();
            }
        }

        if (is_array ($values['IDmateria'])) {
            $arr = $values['IDmateria'];
            foreach ($arr as $value) {
                $values['IDmateria'] = $value;
                $insegna = new Insegna ($values);
                $flag = $flag && $insegna->insert ();
            }
        }

        return $flag;
    }
    return false;
}

function indirizzo ($values) {
    require_once CLASS_INDIRIZZO;
    
    $indirizzo = new Indirizzo ($values);
    
    return $indirizzo->insert () or notify (MSG_FAILED_INSERT . ' indirizzo');
}

function intervento ($values) {
    require_once CLASS_EFFETTUA;
    require_once CLASS_INTERVENTO;

    $flag = true;

    $intervento = new Intervento ($values);
    if ($intervento->insert ()) {
        $intervento->reload ();
        $values = array_merge ($values, $intervento->getValues ());

        $effettua = new Effettua ($values);
        $flag = $flag && $effettua->insert ();
    } else {
        return false;
    }
    return $flag;
}

function materia ($values) {
    require_once CLASS_MATERIA;
    
    $materia = new Materia ($values);
    
    return $materia->insert ();
}

function ospedale ($values) {
    require_once CLASS_OSPEDALE;

    $ospedale = new Ospedale ($values);

    return $ospedale->insert ();
}

function permesso ($values) {
    require_once CLASS_POSSIEDE;

    $user = new User ($values);
    $user->reload ('ID=' . $values['IDuser']);

    $db = openConnection ();
    $actions = $values['action'];
    if (is_array ($actions)) {
        foreach ($actions as $action) {
            $row = $db->fetchAssoc ($db->select ('permesso', array ('ID'), "action='$action' AND what='" . $values['what'] . "'"));
            if ($row) {
                $values['action'] = $action;
                $values['IDpermesso'] = $row['ID'];
                $possiede = new Possiede ($values);
                $possiede->insert () or header ('location: ' . HTTP_CTRL_MAIN . '?msg=' . MSG_FAILED_INSERT . ' permesso!');
            } else {
                return false;
            }
        }
    } else {
        $row = $db->fetchAssoc ($db->select ('permesso', array ('ID'), "action='$actions' AND what='" . $values['what'] . "'"));
        if ($row) {
            $values['action'] = $action;
            $values['IDpermesso'] = $row['ID'];
            $possiede = new Possiede ($values);
            $possiede->insert () or header ('location: ' . HTTP_CTRL_MAIN . '?msg=' . MSG_FAILED_INSERT . ' permesso!');
        } else {
            return false;
        }
    }
}

function reparto ($values) {
    require_once CLASS_REPARTO;
    
    $record = new Reparto($values);
    
    return $record->insert() or notify (MSG_FAILED_INSERT . ' ' . $record->getTable ());
}

function ricovero ($values) {
    require_once CLASS_RICOVERO;
    
    $ricovero = new Ricovero ($values);
    
    return $ricovero->insert() or notify(MSG_FAILED_INSERT . ' ricovero!');
}

function scuola ($values) {
    require_once CLASS_SCUOLA;

    $scuola = new Scuola ($values);

    return $scuola->insert ();
}

function studente ($values) {
    require_once CLASS_FREQUENTA;
    require_once CLASS_STUDENTE;

    $studente = new Studente ($values);
    $studente->insert () or notify(MSG_FAILED_INSERT . ' studente');
    $studente->reload ();
    $values = array_merge ($values, $studente->getValues ());

    $frequenta = new Frequenta ($values);
    $frequenta->insert () or notify(MSG_FAILED_INSERT . ' frequenta');
    return true;
}

function tipoIntervento ($values) {
    require_once CLASS_TIPO_INTERVENTO;

    $tipo_intervento = new TipoIntervento ($values);

    return $tipo_intervento->insert () or notify (MSG_FAILED_INSERT . ' intervento');
}

function tipoRicovero ($values) {
    require_once CLASS_TIPO_RICOVERO;

    $tipo_ricovero = new TipoRicovero ($values);

     $tipo_ricovero->insert () or notify(MSG_FAILED_INSERT . ' ricovero');
    
    return true;
}

function user ($values) {
    require_once CLASS_USER;

    $user = new User ($values);

    return $user->insert () or notify (MSG_FAILED_INSERT . ' user');
}

?>
